﻿// 801. 二进制中1的个数.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>


using namespace std;

/*

https://www.acwing.com/problem/content/803/


给定一个长度为 n 的数列，请你求出数列中每个数的二进制表示中 1 的个数。

输入格式
第一行包含整数 n。

第二行包含 n 个整数，表示整个数列。

输出格式
共一行，包含 n 个整数，其中的第 i 个数表示数列中的第 i 个数的二进制表示中 1 的个数。

数据范围
1≤n≤100000,
0≤数列中元素的值≤109
输入样例：
5
1 2 3 4 5
输出样例：
1 1 2 1 2
*/

const int N = 100010;
int a[N];
int n;

int lowbit(int x) {
    return x & -x;
}


int main()
{
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> a[i]; int ans = 0;
        while (a[i] > 0) {
            a[i] -= lowbit(a[i]);
            ans++;
        }
        cout << ans << " ";
    }

    return 0;
}

 